package com.xiao.tripmateai.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;

import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

@Service
public class TimeService {

    private static final Logger logger = LoggerFactory.getLogger(TimeService.class);

    /**
     * 获取指定城市的当前时间
     * @param timeZoneId 时区ID，例如 Asia/Shanghai
     * @return 包含时区和当前时间的字符串
     */
    @Tool(description = "获取指定城市的当前时间")
    public String getCityTimeMethod(@ToolParam(description = "时区ID，例如 Asia/Shanghai") String timeZoneId) {
        logger.info("当前查询的时区是 {}", timeZoneId);
        return String.format("当前时区是 %s，当前时间是 %s", timeZoneId,
                getTimeByZoneId(timeZoneId));
    }

    /**
     * 根据时区ID获取对应时区的当前时间
     * @param zoneId 时区ID
     * @return 格式化后的时间字符串
     */
    private String getTimeByZoneId(String zoneId) {
        // 使用ZoneId获取时区
        ZoneId zid = ZoneId.of(zoneId);

        // 获取该时区的当前时间
        ZonedDateTime zonedDateTime = ZonedDateTime.now(zid);

        // 定义时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");

        // 将ZonedDateTime格式化为字符串
        return zonedDateTime.format(formatter);
    }
}